33] Phong edges, By Charles Blaquiere.Remember that Phong shading interpolates the surface normal between the current face and the neighbouring face, if the connecting edge is not flagged "sharp". An example:
| 0 | 1 | 2 | 3 __| 4 5
When modelling a wine glass, You'd typically have long faces on the sides of the glass, leading to tiny faces representing the top surface of the rim (obviously, my diagram is upside-down. Mmmm, let's make our object a glass cover that fits over the cheese tray. Yeah, that's it).
The numbers represent some abstract kind of angle, with 0 representing surface normals that point to the right, and 5 those that point downwards. You see how the surface normal changes all over the large face, from 0 to 5, all because of the tiny rim. This causes the "flat areas seem to bulge like pillows" problem familiar to new 3-D users.
The standard ways to get around this are:
- define the connecting edges as sharp. This is fine, if You want a sharp look to the corner.
- create intermediate faces between the vertical and horizontal faces.
The second strategy will soften the effect, but the long vertical face's surface normal will *still* vary towards the normal of the next, almost-vertical, face.
In my modelling bag of tricks I have a solution that allows me to have my cake and eat it too: perfectly flat-looking areas where I want them, soft corners where I want them, all with a minimum of faces to keep object complexity down.
I just model the large, flat area in two parts, and make the edge part really skinny. I can then leave all edges soft, so there won't be any discontinuities, yet the large flat area will look perfectly flat.
|0 |0 | = large flat area (one set of faces) |0 |0 |0 I = another set of faces, parallel to the large I0 set. Should be very narrow, just running ____I2.5 along the Edge that connects to the horizontal 5 3.7 face.
In this case, both "|" and "I" faces have a surface normal of zero, and "_" faces have a surface normal of 5.
The "_" and "I" normals vary from 5 to zero as expected. The big difference, however, is that the "|" edges have normals that vary FROM ZERO TO ZERO. Badabing, badaboom.
------------------------------ ... Please Return to News ... ... Please Return to Index ... ------------------------------